import request from '@/utils/request'
import { randomId } from '@/utils'

// 处理筛选数据
// attrId	integer($int32)属性id
// attrName	string属性名称
// filterTemplateId	string模板id
// fixedItemCode	string固定选项编码（在产状态：1，采购控制状态：2，末级类目：3，成品二级类目：4）
// id	string主键
// isMultChoose	integer($int32)是否可多选（是：1，否：0）
// isOuterShow	integer($int32)是否外层显示（是：1，否：0）
// isSelectAll	integer($int32)属性是否全选（是：1，否：0）
// items	[
//   id	string id
//   isDefaultSelect	integer($int32)是否默认选中（是：1,否:0）
//   name	string显示的名称
//   sort	integer($int32)排序
// ]
// name	string筛选模板名称
// parentId	string父级筛选条件id
// parentName	string父级筛选条件名称
// sort	integer($int32)排序
// type	string数据类型(一级类目：c1,二级类目：c2,三级类目：c3,四级类目：C4，末级类目：category,属性：attr)
function filterDataHandle(list, relevance, isItems = false) {
  // const result = []
  for (let i = 0; i < list.length; i++) {
    const item = list[i]
    if (!isItems) {
      item.show = item.isOuterShow === 1
      item.multiple = item.isMultChoose === 1
      item.title = item.name
      item.unId = randomId()
      item.children = item.items || []
      item.flag = `${item.type}@@@${item.id}`
      if (['attr', 'template_attr'].includes(item.type)) {
        item.value = item.attrId
      }
      if (item.parentId !== '' && item.parentId !== undefined) {
        item.relevanceItemShow = false
        relevance.push({
          index: i,
          parentId: item.parentId
        })
      }
      filterDataHandle(item.children, relevance, true)
    } else {
      item.label = item.name
      item.value = item.id
      item.selected = item.isDefaultSelect === 1
    }
  }
  return list
}

// /search/atlas
// 图册
export function atlas(data) {
  return request({
    method: 'POST',
    url: `/app/v1/search/atlas`,
    data
  })
}

// /search/atlasAttribute
// 图册属性
export function atlasAttribute() {
  return request({
    method: 'POST',
    url: `/app/v1/search/atlasAttribute`
  }).then(res => {
    const data = (res.data || []).map((e, i) => {
      e.title = e.name
      e.value = e.id
      e.flag = 'atlasAttrs'
      e.index = i
      e.show = false
      e.unId = randomId()
      e.multiple = true
      e.children = (e.child || []).map((c, i) => {
        c.label = c.name
        c.value = c.id
        c.index = i
        c.unId = randomId()
        return c
      })
      return e
    })
    res.data = data
    return res
  })
}

// /search/gcenterProduct
// 商品中心商品
export function gcenterProduct(data) {
  return request({
    method: 'POST',
    url: `/app/v1/search/gcenterProduct`,
    data,
    loading: false
  }).then(res => {
    let filterData = res.data.filterDTOS || []
    const relevance = []
    filterData = filterDataHandle(filterData, relevance)
    for (const { index, parentId } of relevance) {
      for (const f of filterData) {
        f.relevanceItemIndex = f.relevanceItemIndex ? f.relevanceItemIndex : []
        if (f.id === parentId) {
          f.relevanceItemIndex.push(index)
        }
      }
    }
    res.data.filterData = filterData
    return res
  })
}
// /search/gcenterProductSeries
// 商品中心产品系列
export function gcenterProductSeries(keyword) {
  return request({
    method: 'POST',
    url: `/app/v1/search/gcenterProductSeries`,
    params: { keyword },
    loading: false
  })
}

// 获取默认模板
export function getDefaultTemplateIdfunction() {
  return request({
    method: 'GET',
    url: '/app/v1/search/getDefaultTemplateId'
  })
}
